import type { PageResult, ResponseBody } from "@/api/typing";
import type { AnyObject, SizeType } from "@/typing";
import type { TableColumnsType } from "ant-design-vue";

/**弹窗属性 */
export interface PopupSelectProps {
  /**绑定值 */
  value: string | string[];
  /**禁用 */
  disabled?: boolean;
  /**控件大小 */
  size?: SizeType;
  /**占位文本 */
  placeholder?: string;
  /**多选 */
  multiple?: boolean;
  /**可清除 */
  allowClear?: boolean;
  /**弹窗宽度 */
  width?: number;
  /**弹窗表格展示列 */
  columns: TableColumnsType;
  /**隐藏搜索操作按钮文本 */
  hideBtnText?: boolean;
  /**显示/绑定字段 */
  fieldNames?: {
    /**展示字段 */
    label: string;
    /**绑定字段 */
    value: string;
  };
  /**默认查询参数 */
  defaultParams?: AnyObject;
  /**回显查询 */
  queryById: (arg: string | string[]) => Promise<ResponseBody<any>>;
  /**分页查询 */
  queryByPage: (...args: any[]) => Promise<ResponseBody<PageResult<any>>>;
}
